﻿using System.Collections.Generic;
using Cesave.Domain.Core;
using Cesave.Domain.PermisosModule.Entities;

namespace Cesave.Domain.PermisosModule.Contracts.Agentes
{
	/// <summary>
	/// 
	/// </summary>
	public interface IAgenteRepository
		: IRepositoryEx<Agente>
	{
		/// <summary>
		/// 
		/// </summary>
		/// <param name="agentesByJuntaSpecification"></param>
		/// <returns></returns>
		IEnumerable<Agente> FindAgentesByJuntaSpecification(AgentesByJuntaSpecification agentesByJuntaSpecification);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="agentesByJuntaSpecification"></param>
		/// <param name="status"></param>
		/// <returns></returns>
		IEnumerable<Agente> FindAgentesByJuntaAndStatusSpecification(AgentesByJuntaSpecification agentesByJuntaSpecification, bool status = true);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="agentesByAclSpecification"></param>
		/// <returns></returns>
		IEnumerable<Agente> FindAgentesByAclSpecification(AgentesByAclSpecification agentesByAclSpecification);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="agenteByGuidSpecification"></param>
		/// <returns></returns>
		Agente FindAgenteByGuidSpecification(AgenteByGuidSpecification agenteByGuidSpecification);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="agenteByUsuarioSpecification"></param>
		/// <returns></returns>
		Agente FindAgenteByUsuarioSpecification(AgenteByUsuarioSpecification agenteByUsuarioSpecification);

	}
}
